//package com.yt.lxh.payment.controller;
//
//public class WxPayController {
//    @PostMapping("/pay-signal")
//    public HashMap<String,String> paySignal(@RequestBody Map<String,Object> signalRes,HttpServletResponse response){
//        log.debug("收到微信回调");
//        try{
//            //TODO:验签
//            //用密文解密出明文
//            Map<String,String> resource=(Map<String,String>)signalRes.get("resource");
//            String ciphertext=resource.get("ciphertext");
//            String associatedData=resource.get("associated_data");
//            String nonce=resource.get("nonce");
//            String plainText=new AesUtil(apiV3Key.getBytes(StandardCharsets.UTF_8)).decryptToString(associatedData.getBytes(StandardCharsets.UTF_8),nonce.getBytes(StandardCharsets.UTF_8),ciphertext);
//            //转换
//            HashMap<String,Object> data=new Gson().fromJson(plainText,HashMap.class);
//            //从数据库中查出对应的订单
//            QueryWrapper<OrderInfo> queryWrapper=new QueryWrapper<>();
//            queryWrapper.eq("order_no",data.get("out_trade_no"));
//            OrderInfo orderInfo=orderInfoService.getOne(queryWrapper);
//            synchronized(this){
//                if(orderInfo.getOrderStatus()
//                        .equals(OrderInfo.NOT_PAIED)){
//                    //将订单设置为已支付状态
//                    orderInfo.setOrderStatus(OrderInfo.PAIED);
//                    //更新订单状态
//                    orderInfoService.updateById(orderInfo);
//                    //添加支付记录
//                    PaymentInfo paymentInfo=new PaymentInfo();
//                    paymentInfo.setOrderNo(orderInfo.getOrderNo());
//                    paymentInfo.setCreateTime(new Date());
//                    paymentInfo.setUpdateTime(new Date());
//                    paymentInfo.setPayerTotal(orderInfo.getTotalFee());
//                    paymentInfo.setPaymentType(PaymentInfo.WECHAT_PAY);
//                    //微信支付中的支付编号
//                    paymentInfo.setTransactionId((String)data.get("transaction_id"));
//                    //交易类型(扫码 刷脸等等)
//                    paymentInfo.setTradeType((String)data.get("trade_type"));
//                    paymentInfo.setTradeState((String)data.get("trade_state"));
//                    //存放全部数据(json)以备不时之需
//                    paymentInfo.setContent(plainText);
//                    paymentInfoService.save(paymentInfo);
//                    log.info("订单{}的支付记录添加成功,支付记录id为{}.",orderInfo.getOrderNo(),paymentInfo.getId());
//                }
//                else{
//                    log.debug("订单{}状态为{},回调处理退出.",orderInfo.getOrderNo(),OrderInfo.PAIED);
//                }
//            }
//            return null;
//        }
//        catch(Exception e){
//            log.error(e.getMessage());
//            response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR);
//            HashMap<String,String> map=new HashMap<>();
//            map.put("code","FAIL");
//            map.put("message","支付失败");
//            return map;
//        }
//    }
//}
